package br.com.gbvbahia.mybooks.dao;

import java.util.Date;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import br.com.gbvbahia.commons.dao.InterfaceDAO;
import br.com.gbvbahia.mybooks.dao.contract.DB;
import br.com.gbvbahia.mybooks.modelos.PerfilVO;

public class PerfilDAO extends InterfaceDAO<PerfilVO, String> {

	public static final String PERFIL_TABLE_NAME = "perfil";
	public static final String[] columns = { "id", "perfil", "data_alteracao",
			"senha", "email", "ws_salvo" };

	public PerfilDAO(Context ctx) {
		super(new DB(ctx));
	}

	@Override
	protected String getColumnIdName() {
		return columns[0];
	}

	@Override
	protected String getTableName() {
		return PERFIL_TABLE_NAME;
	}

	@Override
	protected String[] getColumNames() {
		return columns;
	}

	@Override
	protected String getColumnOrderDefault() {
		return columns[1];
	}

	@Override
	protected PerfilVO getFromCursor(Cursor cursor) {
		PerfilVO toReturn = new PerfilVO();
		toReturn.setId(cursor.getString(cursor.getColumnIndex(columns[0])));
		toReturn.setPerfil(cursor.getString(cursor.getColumnIndex(columns[1])));
		toReturn.setDataAlteracao(Long.parseLong(cursor.getString(cursor
				.getColumnIndex(columns[2]))));
		toReturn.setSenha(cursor.getString(cursor.getColumnIndex(columns[3])));
		toReturn.setEmail(cursor.getString(cursor.getColumnIndex(columns[4])));
		toReturn.setSalvoWS(cursor.getInt(cursor.getColumnIndex(columns[5])));
		return toReturn;
	}

	@Override
	protected void populateContentValues(ContentValues cv, PerfilVO t) {
		cv.put(columns[0], t.getId());
		cv.put(columns[1], t.getPerfil());
		cv.put(columns[2], Long.toString(t.getDataAlteracao()));
		cv.put(columns[3], t.getSenha());
		cv.put(columns[4], t.getEmail());
		cv.put(columns[5], t.getSalvoWS());
	}

	/**
	 * Retorna o perfil do usuario.
	 * 
	 * @return
	 */
	public PerfilVO getPerfil() {
		return getFirst();
	}

	@Override
	public long insert(PerfilVO vo) {
		if (getPerfil() != null) {
			PerfilVO perfil = getPerfil();
			perfil.setEmail(vo.getEmail());
			perfil.setPerfil(vo.getPerfil());
			perfil.setSenha(vo.getSenha());
			perfil.setDataAlteracao(new Date().getTime());
			vo.setId(perfil.getId());
			updatePrepare(perfil);
			return 0l;
		} else {
			return super.insert(vo);
		}
	}

}
